1. Field of the Invention
The present invention relates to a method for controlling disk memory devices used in a VOD (Video On Demand) system, and in particular, it relates to a method for controlling storing to and reading out from the disk memory devices, data contents such as video programs.
2. Description of the Related Art
As one of symbolical products relating to the multimedia technology, a VOD (Video On Demand) system has been developed. The VOD system may offer services to a lot of users, and each service may be selected by an individual user from various services such as movies, news and shopping information.
It is inevitable that such the services offered through the VOD system will deeply infiltrate into various markets such as homes, enterprises and educational organization in the future, and the services may be transmitted through optical communication media such as CATV and B-ISDN (Broadband-Integrated Service & Digital Network).
FIG. 9 indicates an outline of a multimedia server, which has been developed by the present inventors.
A plurality of data stream servers #1-#n are commonly controlled by a higher ranked server 2. Each of the plurality of the data stream servers #1-#n has a plurality of multimedia stream adapters (hereafter, abbreviated as MSA), for instance, three multimedia stream adapters #01-#903. A plurality of disk memory devices or hard disk units H10-H13 are connected to MSA #01, and hard disk units H20-H23 are connected to MSA #02. In addition, a plurality of hard disk units H30-H33 are connected to MSA #03.
Data read out from the hard disk units H10-H33 corresponding to MSA #01-#03 are converted into ATM (Asynchronous Transfer Mode) cells, and are sent to users, who have sent demands or requests for sending the data via the ATM transmission line 1. The data are usually compressed according to a standard of MPEG (Motion Picture Expert Group) 2 for instance.
Here, the striping technology has been employed to efficiently control disk memory devices used in a VOD system. The striping technology may prevent a disk memory device from being occupied, when data of a program are sent to a user sending a demand or request for the program. One data content, that is, data of a program is stored across two or more disk memory devices according to the striping technology.
On the other hand, program data are sent off to the ATM transmission line 1, at a constant speed. For this, a buffer memory is employed, and it is necessary to read out the following sending data from the buffer memory before the buffer memory becomes empty to keep transmitting the program data without intermission.
A capacity of the buffer memory is called as a single buffer in the case that reading out data is performed one time for one user, and further, it is called as a double buffer for two times of the capacity.
Ideally, it is necessary to read out the program data for each requesting user at constant intervals as shown in FIG. 10. That is, in FIG. 10, D1-D5 show series of read-out time slots allotted respectively for five disk memory devices as an example.
Only read-out data sent off to one user for one time slot must be present on a bus 3 of SCSI-II, for instance to avoid data collision when two or more disk memory devices are connected to the bus 3, as shown in FIG. 9. Series of time slots 1-11 are shifted in time as shown in FIG. 10, so that it is possible to assign the time slots to 11 users at once.
When a user sends a request for sending data of a program, a time slot is allocated at a proper timing position corresponding to a disk memory device, in which the first data for the program requested is stored, and then, the data of the program are read out and sent in order beginning from the allocated time slot.
In FIG. 10, the sixth time slot is allocated as a time slot, from which data A1, A2 . . . of a program A requested by the user A is begun to send to the user A. In the same way, the eighth time slot is allocated for starting sending data B1, B2 . . . of a program B which the user B has requested to send.
Therefore, the program data requested by the user A are read out and transmitted to the user A, from one by one of the different disk memory devices for every sixth time slot. Similarly, the program data requested by the user B are read out and transmitted to the user B from one by one of the different disk memory devices for every eighth time slot.
Separately stored data A1, A2 . . . of the program A, which the user A requested to send are read out from disk memory devices D1, D2 . . . at each time of sixth time slots as shown as RD of FIG. 10. Moreover, separately stored data B1 and B2 . . . of the program data B are similarly read out from the disk memory devices D1, D2 . . . at each time of eighth time slots.
The reading interval time T, that is, a period of deadline is assigned for each program data, and it is necessary that a next separately stored data following the output of the previous separately stored data is read out and sent off within such the deadline period.
FIG. 10 shows an example of reading out the program data A and B with a same bit rate. Deadline periods A-T and B-T respectively assigned to the program data A and B are of the same length. In addition, in the example of FIG. 10, both the separately stored program data A1, A2. . . and B1, B2 . . . are read out within the deadline periods A-T and B-T without delay, respectively.
Here, in a conventional system, a timing of reading out next separately stored data following the previously read out, separately stored data has been controlled, based on an amount of data consumption in the buffer memory.
However, the timing of reading out might be actually delayed. The delay may occur due to no controlling of the timing of reading out at the beginning of service. FIG. 11 shows the case where the timing of reading out is delayed.
FIG. 11 (1) shows an example similar to that in FIG. 10, and in the example, the case where deadline times A-T and B-T, during which the program data A and B must be respectively sent off, are the same, but actual reading intervals are different. Separately stored data A1, A2 . . . of the program data A are accurately read out within the deadline period A-T.
On the other hand, the deadline period assigned to the program data B is B-T. Moreover, FIG. 11(2) shows a buffering amount in the buffer memory during reading out the program data B.
As explained above, the data read out from disk memory devices are stored in a buffer memory once and are read out one by one from the buffer memory. Therefore, when the buffering amount of the data stored in the buffer memory becomes 0, the data cannot be sent off, and in result, a picture image is intermitted.
In FIG. 11, when performing a service of sending the program data at the timing "a" is begun for the user B, the separately stored data B1 of the program data B are read out, after reading out the separately stored data A1 of the program A for the user A.
However, since it is not performed to actually control the timing of reading out the stored data, the case may occur where the deadline period B-T cannot be maintained in the following reading of the stored data B.
It is now considered the case where an empty time slot 7 exists between time slots 6 and 8, and a different user C has sent a request for sending the program data having a reading head in the disk memory device D3, before the separately stored data B2 are read out.
The timing "b" in FIG. 11 should be assigned for reading out the separately stored data B2 corresponding to the deadline B-T. However, the separately stored data C1 of the program data C will be previously read out for the user C, when there is a reading request for sending the program corresponding to the time slot 7 from the user C, before the timing of reading out the separately stored data B2. Therefore, after reading out the separately stored data C1, the separately stored data B2 will be read out and then should be delayed.
On the other hand, the buffering data stored in the buffer memory for the user B is consumed one by one for the period T1 until the following separately stored data are read out, and then, the buffering amount in the buffer memory reaches to 0.
Therefore, the buffering amount is already 0 at the timing "b", and the separately stored data B2 cannot be read out, since the separately stored data C1 of the program data C are previously read out for the user C. As a result, the picture image of the program data for the user B may be intermitted.
Therefore, a double buffering method has been employed in a conventional system, so that an extra buffer memory is assigned for each user to secure at least playing back data corresponding to a maximum delay, for instance, of extra data read out for one reading out time, and then the secured data are sent off to the user.
FIG. 12 is a diagram explaining a conventional system employing the double buffering method. FIG. 12 (1) is similar to FIG. 11 (1), and only difference is that a buffering amount of the buffer memory is two times of that in the case of FIG. 11 as shown in FIG. 12 (2).
A reading out size corresponds to one buffering amount at the timing "a", and then, the separately stored data B1 is written in the buffer memory at the timing "a". When the separately stored data B1 are written in the buffer memory, the buffering amount becomes to correspond to buffering data of two times, and then, the two buffering data of two times will be consumed one by one.
Moreover, timing of reading out the separately stored data B2 for the user B at the timing "b" is delayed by .tau., because of reading out the separately stored data C1 for the user C as explained in FIG. 11.
However, the buffering amount becomes the reading out size BS or less, but the buffering amount for the user B is still not 0, yet. Therefore, the picture image is prevented from being intermitted, even if the separately stored data B2 are read out from the buffer memory after the delay time .tau..
On the other hand, data streams having a same playing back rate have been stored in a group of disk memory devices which one MSA may control. In general, since contents of programs such as movies are offered by various enterprises, bit rates for the program data streams are not always same. However, it has been possible that two or more disk memory devices which one MSA may control can store only data streams having a same playing back bit rate.